home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Dev / GameboyDev / GBDK / lib / sqrt.s < prev    next >
Encoding:
Text File  |  1999-04-23  |  938 b   |  93 lines

  1.  
  2.     ; INCLUDE    "macros.ms"
  3.     .include    "math.s"
  4.     .area    _BSS
  5. tmp:
  6. x:
  7.     .ds    4
  8. og:
  9.     .ds    4
  10. niter:
  11.     .ds    1
  12.     .area    _CODE
  13. .sqrt::
  14.     ld    a,h
  15.     ld    (x+3),a
  16.     ld    a,l
  17.     ld    (x+2),a
  18.     ld    a,d
  19.     ld    (x+1),a
  20.     ld    a,e
  21.     ld    (x+0),a
  22.     ld    a,h
  23.     ld    (og+3),a
  24.     ld    a,l
  25.     ld    (og+2),a
  26.     ld    a,d
  27.     ld    (og+1),a
  28.     ld    a,e
  29.     ld    (og+0),a
  30.     ld    a,h
  31.     sub    #64
  32.     rr    a
  33.     add    #64
  34.     ld    h,a
  35.     ld    a,#5
  36.     ld    (niter),a
  37. start_for:
  38.     ld    a,(og+3)
  39.     ld    b,a
  40.     ld    a,(og+2)
  41.     ld    c,a
  42.     push    bc
  43.     ld    a,(og+1)
  44.     ld    b,a
  45.     ld    a,(og+0)
  46.     ld    c,a
  47.     push    bc
  48.     ld    hl,#x
  49.     ld    a,(hl+)    
  50.     ld    e,a
  51.     ld    a,(hl+)
  52.     ld    d,a
  53.     ld    a,(hl+)
  54.     ld    h,(hl)
  55.     ld    l,a
  56.     call    .fdiv32
  57.     ld    a,(og+3)
  58.     ld    b,a
  59.     ld    a,(og+2)
  60.     ld    c,a
  61.     push    bc
  62.     ld    a,(og+1)
  63.     ld    b,a
  64.     ld    a,(og+0)
  65.     ld    c,a
  66.     push    bc
  67.     call    .fadd32
  68.     dec    h
  69.     ld    a,(og+1)
  70.     cp    d
  71.     jr    nz,exit_for
  72.     ld    a,(og+2)
  73.     cp    l
  74.     jr    nz,exit_for
  75.     ld    a,(og+3)
  76.     cp    h
  77.     jr    nz,exit_for
  78.     ret    
  79. exit_for:
  80.     ld    a,h
  81.     ld    (og+3),a
  82.     ld    a,l
  83.     ld    (og+2),a
  84.     ld    a,d
  85.     ld    (og+1),a
  86.     ld    a,e
  87.     ld    (og+0),a
  88.     ld    a,(niter)
  89.     dec    a
  90.     ld    (niter),a
  91.     jr    nz,start_for
  92.     ret    
  93.